"""
1.如何将 属性/方法  进行私有化
类中的变量或者方法以双下划线__开头命名,则该变量或者方法为私有的,私有的变量或者方法
,只能在本类的内部使用,类的外部无法使用
2.如何访问私有的属性/方法:提供公共的方法,用于对私有成员的操作
"""
class Clerk:
    #公共属性
    name = None
    #私有属性 , 为什么加上__就是私有属性了呢，是因为这是python的设计者所设计的
    __job = None
    __salary = None

    #构造方法
    def __init__(self , name , job , salary):
        self.name = name
        self.__job = job
        self.__salary = salary

    #提供公共的方法,对私有属性操作(根据实际的业务编写即可)
    def set_job(self , job):
        self.__job = job

    def get_job(self):
        return self.__job

    #定义私有方法
    def __hi(self):
        print("hi()")

    #定义公有方法，操作私有方法
    def f1(self):
        self.__hi()

clerk = Clerk("tiger" , "Python工程师" , 20000)

#如果这样使用,因为Python语言的动态特性,会动态的创建属性
#__job,并不是同一个变量,我们在类中定义的__job,私有属性完整的名字是 _Clerk__job
#内部对私有属性做了处理  使用debug就会看的特别清楚
clerk.__job = "Go工程师"
print(f"job={clerk.__job}")
print("ok")

# 获取真正的私有属性job
print(f"{clerk.get_job()}")
#如果是公共属性,在类的外部也可以直接访问
# print(clerk.name)
#如果是私有属性,在类的外部不可以直接访问
# print(clerk.__job__)
#使用公共方法访问私有属性
# clerk.set_job("程序员")
# print(clerk.get_job())

# clerk.__hi()
# clerk.f1()